// session
// import Seeeion from 'koa-session'
// 定时器
// import TimeOut from './config/YBTimeOut'

const Koa = require("koa")
/**
 * 加载静态数据插件
 */
const Static = require("koa-static")
const Path = require("path")
/**
 * POST上传解析
 */
const koaBody = require("koa-body")
const Config = require("@config/index")
const http = require("http")
const YBError = require("@lib/error")
/**
 * Graph
 */
const GraphServer = require('./GraphQL/schema')
const WFile = require('@/lib/file')

/**
 * 运行MongoDB
 */
require("@mongodb")

/**
 * log4 初始化
 */
require('./logs')

/**
 * 创建App
 */
const app = new Koa()

/**
 * 日志
 */
require('./logs')(app)

/**
 * 错误处理
 */
app.use(YBError);

/**
 * 超时处理
 */
// app.use(TimeOut);

/**
 * 检查文件夹是否存在，如果不存在就创建
 */
  WFile.creatFolder(Config.koaBody.formidable.uploadDir)
/**
 * koaBody
 */
app.use(koaBody(Config.koaBody))

/**
 * session
 */
// app.keys = Config.sesssion.keys()
// app.use(Seeeion(Config.sesssion, app))

/**
 * 自定义中间件
 */
app.use(require("@/lib/YBMiddleware"))

/**
 * 静态文件
 */
app.use(Static(Path.join(__dirname, 'static')))
app.use(Static(Path.join(__dirname, 'view')))
app.use(Static(Path.join(__dirname, 'docs')))

/**
 * GraphQL
 */
GraphServer(app)

/**
 * 路由配置
 */
const router = require('./router/index')
app
  .use(router.routes(), router.allowedMethods())

http.createServer(app.callback()).listen(process.env.SERVER_PORT);

